package com.bsdsma.fengheguaiapp.service;


import com.bsdsma.fengheguaiapp.dto.RoominfoAddDto;
import com.bsdsma.fengheguaiapp.dto.RoominfoSearchDto;
import com.bsdsma.fengheguaiapp.entity.Roominfo;
import com.bsdsma.fengheguaiapp.dto.PageRetDto;
import com.bsdsma.fengheguaiapp.dto.DataGroupByDateDto;

import java.util.Date;
import java.util.List;

/**
* 酒店房型业务操作接口声明
*/
public interface RoominfoService {

    /**
    * 分页查询酒店房型
    *
    * @param dto   查询酒店房型条件
    * @return      分页数据
    */
    PageRetDto<Roominfo> search(RoominfoSearchDto dto);

    /**
    * 查询所有酒店房型
    */
    List<Roominfo> listAll();

    /**
    * 添加酒店房型
    * @param dto   添加的对象数据
    * @return      添加后的酒店房型对象
    */
    Roominfo add(RoominfoAddDto dto);

    /**
    * 修改酒店房型
    * @param id    主键ID
    * @param dto   修改数据
    * @return      修改后的酒店房型对象
    */
    Roominfo update(Long id, RoominfoAddDto dto);

    /**
    * 通过ID查询
    * @param id    主键
    * @return      查询到的酒店房型对象
    */
    Roominfo getById(Long id);


    /**
    * 删除酒店房型
    * @param id    酒店房型ID
    */
    void delete(Long id);

    /**
    * 更新酒店房型
    * @param id    酒店房型ID
    */
    int updateById(Roominfo entity);

    /**
    * 查询酒店房型数量
    */
    Long count();

    /**
    * 按日期分组查询新增数量
    * @param beginDate 开始时间
    * @param endDate   结束时间
    * @return
    */
    List<DataGroupByDateDto> countByDay(Date beginDate, Date endDate);
}